/* 
 * File:   Valeur.cpp
 * Author: ribesg
 * 
 * Created on 7 décembre 2011, 14:04
 */

#include "Valeur.h"

bool Valeur::estEntiere() {
    return typeid(*this)==typeid(ValeurEntiere);
}

bool Valeur::estReelle() {
    return typeid(*this)==typeid(ValeurReelle);
}

bool Valeur::estNumerique() {
    return this->estEntiere() || this->estReelle();
}

bool Valeur::estChaine() {
    return typeid(*this)==typeid(ValeurChaine);
}

bool Valeur::estCaractere() {
    return typeid(*this)==typeid(ValeurCaractere);
}

void Valeur::setValeur(string val) {
    val = val;
}

// ValeurEntiere
ValeurEntiere::ValeurEntiere(int valeur) {
    this->valeur = valeur;
}

int ValeurEntiere::getValeur() {
    return this->valeur;
}

// ValeurReelle
ValeurReelle::ValeurReelle(float valeur) {
    this->valeur = valeur;
}

float ValeurReelle::getValeur() {
    return this->valeur;
}

// ValeurChaine
ValeurChaine::ValeurChaine(string valeur) {
    this->valeur = valeur;
}

string ValeurChaine::getValeur() {
    return this->valeur;
}

// ValeurCaractere
ValeurCaractere::ValeurCaractere(string valeur) {
    this->valeur = valeur;
}

string ValeurCaractere::getValeur() {
    return this->valeur;
}


ostream & operator <<(ostream & cout, ValeurEntiere val) {
    cout << val.getValeur() << endl;
    return cout;
}

ostream & operator <<(ostream & cout, ValeurReelle val) {
    cout << val.getValeur() << endl;
    return cout;
}

ostream & operator <<(ostream & cout, ValeurChaine val) {
    cout << val.getValeur() << endl;
    return cout;
}

ostream & operator <<(ostream & cout, ValeurCaractere val) {
    cout << val.getValeur() << endl;
    return cout;
}